package IO;

import java.io.*;

/**
 *1.图片读取到字节数组中
 * 2.字节数组写到文件
 */
public class IOtest08 {
    public static void main(String[] args) {
        byte[] datas = FileToByteArry("src/IO/ppp.png");
        System.out.println(datas.length);

        ByteArrayToFile(datas,"src/IO/pCopy.png");
    }


    /**图片读取到字节数组中
     * 1.图片到程序FileinputStream
     * 2.程序到字节数组byteArrayOutputStream
     * **/
    public static byte[] FileToByteArry(String filePath){
        //创建源与目的地
        File src = new File(filePath);
        byte[] dest = null;
        //选择流
        InputStream is = null;
        ByteArrayOutputStream baos = null;
        try {
            //读取
            is =  new FileInputStream(src);
            baos=new ByteArrayOutputStream();
            byte[] flush = new byte[1024*10];//缓冲容器1024代表1k
            int len = -1;//接收长度
            while ((len =is.read(flush))!=-1){
                baos.write(flush,0,len);//写出到字节数组中
            }
            baos.flush();//刷新一下，避免数据在内存中驻留
            is.close();
            return baos.toByteArray();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**字节数组写到文件
     * 1.字节数组读取到程序byteArrayinputStream
     * 2.程序写出到文件FileOutputStream
     * */
    public static void ByteArrayToFile(byte[] src,String filePath){
        //创建源
        File dest = new File(filePath);
        //选择流
        InputStream is = null;
        OutputStream os = null;
        try {
            //读取
            is =  new ByteArrayInputStream(src);
            os=new FileOutputStream(dest);
            byte[] flush = new byte[1024*10];//缓冲容器1024代表1k
            int len;//接收长度
            while ((len =is.read(flush))!=-1){
                os.write(flush,0,len);
            }
            os.flush();//刷新一下，避免数据在内存中驻留
            is.close();
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}
